package com.java2007.service.impl;

import com.alibaba.druid.util.StringUtils;
import com.java2007.dao.FoodTypeDao;
import com.java2007.dao.impl.FoodTypeDaoImpl;
import com.java2007.factory.BeanFactory;
import com.java2007.pojo.FoodType;
import com.java2007.service.FoodTypeService;
import com.java2007.util.JdbcUtil;

import java.sql.SQLException;
import java.util.List;

/**
 * 菜类别业务接口实现
 */
public class FoodTypeServiceImpl implements FoodTypeService {
//    FoodTypeDaoImpl ftdao = new FoodTypeDaoImpl();

    private FoodTypeDao ftdao = (FoodTypeDao) BeanFactory.getBean("com.java2007.dao.impl.FoodTypeDaoImpl");
    /**
     * 查询所有菜类别
     */
    @Override
    public List<FoodType> findAll() throws SQLException {

        return ftdao.selectAll();
    }

    /**
     * 通过菜类别名字查询
     * @param keyword
     * @return
     */
    @Override
    public List<FoodType> findByFoodTypeName(String keyword) throws SQLException {
        //判断输入框内是否输入值。输入：按照输入的名字调通过名字查询的方法
        //                      未输入：调用查询所有菜类别的方法
        if (StringUtils.isEmpty(keyword)){
            keyword="";
        }else{
            //去空格，防止输入空格导致无法查询
            keyword = keyword.trim();
        }
        //判断完得到的值肯定是 “”或“菜类别”
        return ftdao.findByFoodTypeName("%"+keyword+"%");
    }

    /**
     * 根据ID删除菜类别
     * @param typeId
     * @return
     * @throws SQLException
     */
    @Override
    public int deleteByFoodTypeId(Integer typeId) throws SQLException {

        try {
            //开启事务
            JdbcUtil.begin();
            ftdao.deleteByFoodTypeId(typeId);
            //提交事务
            JdbcUtil.commit();

        } catch (Exception e) {
            e.printStackTrace();
            //回滚事务
            JdbcUtil.rollback();
            return 0;
        }

        return 1;
    }

    /**
     * 修改
     * @param typeName
     * @return
     * @throws SQLException
     */
    @Override
    public int saveByFoodTypeName(String typeName) throws SQLException {
        try {
            //开启事务
            JdbcUtil.begin();
            ftdao.saveByFoodTypeName(typeName.trim());
            //提交事务
            JdbcUtil.commit();

        } catch (Exception e) {
            e.printStackTrace();
            //回滚事务
            JdbcUtil.rollback();
            return 0;
        }

        return 1;
    }

    /**
     * 通过id查询
     * @param typeId
     * @return
     * @throws SQLException
     */
    @Override
    public FoodType findByFoodTypeId(int typeId) throws SQLException{
        return ftdao.findByFoodTypeId(typeId);
    }

    /**
     * 通过id更新
     * @param foodType
     * @return
     * @throws SQLException
     */
    @Override
    public int updata(FoodType foodType) throws SQLException {
        try {
            //开启事务
            JdbcUtil.begin();
            ftdao.updata(foodType);
            //提交事务
            JdbcUtil.commit();

        } catch (Exception e) {
            e.printStackTrace();
            //回滚事务
            JdbcUtil.rollback();
            return 0;
        }

        return 1;
    }
}
